Application remoting, or “app remoting,” is a technology that enables an application running in a remote desktop on a server system to be accessed via a client desktop on a client system. Such an application is known as a remoted application. Typically, the remoted application comprises an application window that is presented within the remote desktop (referred to herein as the “server-side application window”). As part of the app remoting process, this server-side application window is made accessible to a user of the client system in the form of a corresponding window that is rendered in the client desktop (referred to herein as the “client-side application window”). The client-side application window is updated on a continuous basis to mirror the status and contents of the server-side application window.
One challenge with implementing app remoting involves efficiently handing window resize actions. In scenarios where the operating system-level “show window contents while dragging” option is enabled in the remote desktop, a resize of the server-side application window will cause the entirety of the window to be dynamically refreshed in the remote desktop as the resize occurs. This in turn, will cause a large number of framebuffer updates (e.g., one every few milliseconds (ms)) to be generated and sent from the server system to the client system in order to synchronize the display of the client-side application window with the server-side application window. The generation and transmission of these resize-induced framebuffer updates can consume a significant amount of compute resources on the server system, as well as a significant amount of network bandwidth between the server and client.
Certain app remoting implementations address this issue by detecting when the user has initiated a “left-click-and-drag” operation on one or more standard resize regions of the client-side application window and, upon detecting this specific operation, optimizing the window resize process on the client side. These standard resize regions typically comprise the borders (i.e., edges and corners) of the window. However, a drawback of this approach is that some applications allow window resize actions to be initiated using left-click-and-drag on non-standard resize regions (e.g., regions that are within, or not exactly aligned with, the window borders). Accordingly, for these and other similar applications, the optimization approach noted above is not sufficient for optimizing window resize actions in all possible scenarios.